iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 18
1
Security

無趣的密碼學,有趣的加密!系列 第 18

[Day 18] 018 - 雜湊 - Hash (前言)

  • 分享至 

  • xImage
  •  

雜湊 - Hash - 淺講

我們看完了『對稱式密碼學』跟『非對稱式密碼學』之後。

我們要來說說密碼學的另一個不亞於上面兩種重要性的Hash了。(Hash其實更重要!)

但一樣在進入章節之前,我想水個字累積一下稿量(誤。

來講講這個部分的的一些分類與特別。

Hash是什麼?

其實Hash就像是文件的指紋一般。

我將資料輸入進Hash的算法後(無須其他的參數),會生產出長度固定的碼,而這個碼就是Hash的指紋。

而且只要少許的變動或不一樣,將會使整個Hash出來的指紋完全不同。

這有助於比對檔案的完整或是驗證資料,只需要短短的Hash碼就能驗證檔案是否完整,有些Hash能做資料修復。

使用Hash後能把很多的資料轉換成固定長度,能當成收尋索引,加快資料的搜索。

也可以當資料保密驗證,我不知道你的密碼,但我能算出Hash來比對,而這樣你的密碼就不會洩漏了。

Hash的本質

不得不再提到本質的問題,對稱式的密碼學其實就是一般的加密。

而非對稱式一般都是用來傳輸,那Hash呢?

其實Hash不只單單能用來驗證,還有很多細節在裡面,而衍生出來的HMAC也是目前十分重要的機制,目前JWT也是使用了這個機制。

那來探討一下Hash的特性的:

  1. 單向性
    我想最重要的一個跟加密解密不同的是『單向性』。
    主要是為了不讓結果能夠還原,同時又有很高的熵。
    為了能夠做驗證與比對,這樣的特性是十分重要的。
  2. 速度特化
    這邊指的速度特化其實不只是要快,有些特別的Hash是要特別的慢。
    例如:密碼的Hash,要很慢才不會被彩虹表跟暴力破解。
    能想像一下:
    假設我的密碼是9876然後做一個特殊的Hash。
    有一個攻擊者,從1-9999開始猜。
    如果這個Hash很快每一次只需要1ns,那整體時間可能不需要1s。
    如果這個Hash很慢一次必需得花1秒,那同樣1-9999那可能就花費9999秒的時間。
    而快速的Hash其實也不難理解,就是如果有10G的檔案要做完整性驗證,確保檔案無損毀,如果很慢的Hash去做10G,就必需要花費超出想像的時間。
    那這時候,能夠快速的Hash就很重要了。
  3. 長度特化
    不管資料多長、多短都能輸出固定的長度。
  4. 算法特化
    有些Hash是用來修復資料的,這時算法的特化就很重要。
    要從Hash的資料中修補缺失的資料。
  5. 難以偽造
    這跟第一點的單向性有關之外,同時資料極度微小的差異都會使整個結果完全的不同。
  6. 難以碰撞
    Hash最重要的核心就在,固定的長度還十分困難去碰撞。
    雖然從第4點來說,變動會很大,但卻難以碰撞,除非資料一樣,不然難以偽造,因為碰撞的機率極低。

Hash的種類

嗯……這問題超難,因為任何都能成為Hash。

簡單的取10餘數,都是一種Hash。

連我們之前的加密演算都能算是一種Hash。

你想想能輸出固定長度,也能混亂資料,沒有Key也沒辦法還原,其實那些加密也能做『Hash』。

但安不安全、適不適合就是另一回事了。

這邊我這邊拿出別人整理過的Hash列表List of hash functions

那我接下來會講解的幾個做個分類:

  • 檔案資料類Hash:
    • MD5
    • SHA家族
  • 校驗與修復Hash:
    • CRC
  • 密碼驗證Hash(則一或二,其他會附資料、論文等):
    • BCrypt
    • PBKDF2
    • Argon2id
    • scrypt
  • 訊息鑑別
    • HMAC

Hash淺講 總結

這下會使光是講Hash的部分,就會花費大量的時間……

畢竟其實密碼學也是一整個學期的課,密碼學的書其實不亞於那些專業科目的厚度。

我其實也簡化了很多數學上的細節、驗證、攻擊、破解、安全分析、猜想問題、潛在安全問題、算法更深入的寫法、論文中的詳細狀況等。

還沒有把密碼學裡的一些傳輸歷史跟理論、還有資訊安全相關的部分也想跟大家說說。

同時我本來後面有排目前實際在使用的加密演算實際應用的流程跟規範,並探討這些版本的修改與潛在的漏洞。

但我們不用擔心,還有真正的很多『大神』!!

我有看到同樣組別的參賽者有TLS詳解與實做、CTF的攻擊教學與分析、Cissp大神、數位鑑識、逆向工程等。

我相信大神會看到我這樣的小屁孩來寫這類文章後,直接跳出來寫真正專業的文章。

剩下交給他們~我就能耍廢了~~


參考資料

雜湊函式

Hash

List of hash functions


上一篇
[Day 17] 017 - 橢圓曲線密碼學 - Elliptic Curve Cryptograph (二)
下一篇
[Day 19] 019 - 雜湊 - Hash(一)
系列文
無趣的密碼學,有趣的加密!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言